package com.example.java.utils;

import java.util.Base64;

// Base64 编码解码示例
public class Base64Main {
    public static void main(String[] args) {

        String message = "龙茶清欢";

        // 使用默认类型Base64编码方案进行编码
        // 使用基本类型Base64编码方案进行编码
        Base64.Encoder encoder = Base64.getEncoder();
        String encoded = encoder.encodeToString(message.getBytes());
        System.out.println("Encoded: " + encoded);

        // 使用基本类型Base64编码方案进行解码
        Base64.Decoder decoder = Base64.getDecoder();
        byte[] decodedBytes = decoder.decode(encoded);
        String decoded = new String(decodedBytes);
        System.out.println("Decoded: " + decoded);



        // MimeEncoder 适用于 MIME 内容的编码，常用于邮件和互联网协议中。
        // 使用MIME类型Base64编码方案进行编码
        Base64.Encoder mimeEncoder = Base64.getMimeEncoder();
        String mimeEncoded = mimeEncoder.encodeToString(message.getBytes());
        System.out.println("Mime Encoded: " + mimeEncoded);

        // 使用MIME类型Base64解码方案进行解码
        Base64.Decoder mimeDecoder = Base64.getMimeDecoder();
        byte[] mimeDecodedBytes = mimeDecoder.decode(mimeEncoded);
        String mimeDecoded = new String(mimeDecodedBytes);
        System.out.println("Mime Decoded: " + mimeDecoded);



        // URLEncoder 适用于 URL 和文件名的编码，常用于在 URL 中传输数据。
        // 使用URL和文件名安全类型Base64编码方案进行编码
        Base64.Encoder urlEncoder = Base64.getUrlEncoder();
        String urlEncoded = urlEncoder.encodeToString(message.getBytes());
        System.out.println("Url Encoded: " + urlEncoded);

        // 使用URL和文件名安全类型Base64编码方案进行解码
        Base64.Decoder urlDecoder = Base64.getUrlDecoder();
        byte[] urlDecodedBytes = urlDecoder.decode(urlEncoded);
        String urlDecoded = new String(urlDecodedBytes);
        System.out.println("Url Decoded: " + urlDecoded);
    }
}

// 关于 Base64 编码解码的相关的使用参考官方文档 https://java.cunzaima.cn/jdk21/doc-zh/api/java.base/java/util/Base64.html